/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package dominosaude.dominoesView;

import dominosaude.dominoesControler.DominoesControl.PlayOnlineStatus;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.AlreadyBoundException;
import java.rmi.RemoteException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**
 *
 * @author pedromedeiros
 */
public class MainGUI extends JFrame{

    public JButton botao1Jogador;
    public JButton botao2Jogadores;
    public JButton botaoJogarEmRede;
    public JButton botaoCriarSala;
    public JButton botaoProcuraPartida;

    private JLabel instrucoesPartida;

    

    public MesaDominous mesa;

    public MainGUI(){
        super("Domino SauDe");
        setLayout(null);
        setBounds(20, 30, 900, 500);
        setBackground(Color.orange);

        // encerar processo ao fechar janela
        setDefaultCloseOperation(MainGUI.EXIT_ON_CLOSE);


        botao1Jogador = new JButton();
        botao1Jogador.setText("1 jogador");
        botao1Jogador.setBounds(50, 50, 200, 50);
        botao1Jogador.addActionListener(new jb1Jogador());

        botaoJogarEmRede = new JButton();
        botaoJogarEmRede.setText("Jogar em rede");
        botaoJogarEmRede.setBounds(50,100,200,50);
        botaoJogarEmRede.addActionListener(new jbJogarRede());


        instrucoesPartida = new JLabel("Escolha a opção de jogador");
        instrucoesPartida.setBounds(20, 400, 500, 50);

        add(instrucoesPartida);


        mesa =  new MesaDominous();

        add (botaoJogarEmRede);
        add(botao1Jogador);
    }


    



    /*
     *
     * implementação da dos eventos
     * evento do botao inicial de um jogador
     *
    */
    class jb1Jogador implements ActionListener{
        public void actionPerformed(ActionEvent e)
        {
            System.out.println("Comcar o jogo de um jogador");
            add(mesa);
            botao1Jogador.setVisible(false);
            botaoJogarEmRede.setVisible(false);
            mesa.ComecaJogo1Jogador();
            mesa.setVisible(true);
            mesa.repaint();

            instrucoesPartida.setText("jogadar Localmente");
            
            repaint();
        }
    }

    class jbJogarRede implements ActionListener{
        public void actionPerformed(ActionEvent e)
        {
//            System.out.println("Comecar o jogo de um jogador");
//            add(mesa);
            botao1Jogador.setVisible(false);
            botaoJogarEmRede.setVisible(false);

            botaoCriarSala = new JButton();
            botaoCriarSala.setText("Host");
            botaoCriarSala.setBounds(50, 50, 200, 50);
            botaoCriarSala.addActionListener(new jbCriarSala());

            botaoProcuraPartida = new JButton();
            botaoProcuraPartida.setText("Conecta a host");
            botaoProcuraPartida.setBounds(50,100,200,50);
            botaoProcuraPartida.addActionListener(new jbJuntarJogo());

            add(botaoCriarSala);
            add(botaoProcuraPartida);
//            instrucoesPartida.setText("jogadar Localmente");

            repaint();

        }
    }

    class jbCriarSala implements ActionListener{
        public void actionPerformed(ActionEvent e)
        {
            //chamada para criar a mesa
            // dominosaude.dominoesControler.HostJogo.main();
            add(mesa);
            botaoCriarSala.setVisible(false);
            botaoProcuraPartida.setVisible(false);
            mesa.setVisible(true);
            mesa.repaint();
            instrucoesPartida.setText("Esperando Jogador");
            try {
                try {
                    mesa.ComecaJogo2Jogadores(PlayOnlineStatus.HOST_WAITING);
                } catch (AlreadyBoundException ex) {
                    Logger.getLogger(MainGUI.class.getName()).log(Level.SEVERE, null, ex);
                }
            } catch (RemoteException ex) {
                Logger.getLogger(MainGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
            repaint();
        }
    }
    class jbJuntarJogo implements ActionListener{
        public void actionPerformed(ActionEvent e)
        {
            //chamada para criar a mesa
            add(mesa);
            botaoCriarSala.setVisible(false);
            botaoProcuraPartida.setVisible(false);
            mesa.setVisible(true);
            mesa.repaint();
            instrucoesPartida.setText("Tentando conectar");
            try {
                try {
                    mesa.ComecaJogo2Jogadores(PlayOnlineStatus.CLIENT_WAITING);
                } catch (AlreadyBoundException ex) {
                    Logger.getLogger(MainGUI.class.getName()).log(Level.SEVERE, null, ex);
                }
            } catch (RemoteException ex) {
                Logger.getLogger(MainGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
            repaint();
        }
    }
}